const express = require("express");
const app = express();

/* 导入xml2js */
/* 导入两个对象 */
/* 1、导入 */
var xml2js = require('xml2js');
/* 2、创建xml->js对象 */
var parser = new xml2js.Parser({
    explicitArray: false
});
/* 3、创建 js->xml对象 */
var builder = new xml2js.Builder({
    rootName: "xml",
    cdata: true,
    headless: true
})

app.get('/', (req, res) => {
    console.log(req.query, 666);
    /*  res.send('请求成功了'); */
    res.send(req.query.echostr);
});
app.post('/', (req, res) => {
    /* 获取数据  数据流事件监听 */
    // var bufferList = null;
    // req.on("data", function (buffer) {
    //     bufferList += buffer
    // })
    // req.on("end", function () {
    //     console.log(bufferList, 88)

    var bufferList = [];
    req.on("data", function (buffer) {
        bufferList.push(buffer);
    })
    req.on("end", function () {
        var result = Buffer.concat(bufferList);
        parser.parseString(result.toString(), (err, msgObj) => {
            console.log(msgObj, 66);
            var msg = "";
            /* 
                msbObj输出效果==={ xml:
                                    { ToUserName: 'gh_3ec8e236dc1c',
                                        FromUserName: 'o13wWwXHgPZHj5Oz_cEfAD154Uec',
                                        CreateTime: '1554464333',
                                        MsgType: 'text',
                                        Content: '。。。',
                                        MsgId: '22254577034414265' 
                                    } 
                                } 
                */
            if (msgObj.xml.MsgType == "text") {
                switch (msgObj.xml.Content) {
                    case "1":
                        msg = "你好很高兴认识你";
                        break;
                    case "2":
                        msg = "hello  world";
                        break;
                    case "3":
                        msg = "alaseyo";
                        break;
                    default:
                        msg = "请选择你要输入的语言：  1 中文  2 英语  3 韩语";
                        break;
                }

            }

            /* 将最终要回复给用户的信息  响应给微信服务器 */
            /* 这个消息也是以xml格式进行发送的 */
            /* 
            { xml:
                {   ToUserName: 'gh_3ec8e236dc1c',
                    FromUserName: 'o13wWwXHgPZHj5Oz_cEfAD154Uec',
                    CreateTime: '1534995701',
                    MsgType: 'text',
                    Content: '4',
                    MsgId: '6592756335714395352' } } 
            <xml>
            */

            var returnMsg = {
                ToUserName: msgObj.xml.FromUserName,
                FromUserName: msgObj.xml.ToUserName,
                CreateTime: +new  Date(),
                MsgType: 'text',
                Content: msg
            }

            /* 将数据以xml返回给用户 */
            res.send(builder.buildObject(returnMsg))
        });
    })
})
app.listen(80, () => {
    console.log("http://echo.free.idcfengye.com");
})



// /* 导入xml2js */
// /* 导入两个对象 */
// /* 1、导入 */
// var xml2js = require('xml2js');
// /* 2、创建xml->js对象 */
// var parser = new xml2js.Parser({
//     explicitArray: false
// });
// /* 3、创建 js->xml对象 */
// var builder = new xml2js.Builder({
//     rootName: "xml",
//     cdata: true,
//     headless: true
// })

// /* xml转换成js对象 */
// var  str=`<xml><ToUserName><![CDATA[gh_3ec8e236dc1c]]></ToUserName>
// <FromUserName><![CDATA[o13wWwXHgPZHj5Oz_cEfAD154Uec]]></FromUserName>
// <CreateTime>1554463778</CreateTime>
// <MsgType><![CDATA[text]]></MsgType>
// <Content><![CDATA[，]]></Content>
// <MsgId>22254566937443931</MsgId>
// </xml>`;

// /* 4、调用parser 将xml数据转成js对象 */
// parser.parseString(str.toString(), (err, msgObj) => {
//     console.log(msgObj,66);
// });

// /* 5、调用bulider 将js对象转对象换成xml数据*/
// var obj = {
//     name: "小明",
//     age: 18
// }

// var result = builder.buildObject(obj);
// console.log(result,77);